<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<title></title>
</head>
<body>

<script type="text/javascript">
	//1.let 声明的变量不能重复声明
	let a = 10
	console.log(a)
	// let a = 20 'a'has already been declared 报错
	// console(a)
	//防止多人协作产生冲突

	//var 可以重复声明
	//var b = 20
	//var b = 30
	//console.log(b)

	//2.let 声明的变量没有变量提升
	// console.log(n)
	// let n=7 // ReferenceError: Cannot access 'n' before initialization 报错

	// 3.let声明的变量是块级作用域({}) 无法挂到window上
	let b =10
	var c =20
	console.log(window)

	//4.let具有暂时性死区
	//只要块级作用域里存在let 他所声明的变量就绑定在这一块区域{}，不受外界的影响
	/*var s =2
	if(true){
		s = 6
		let s =10 
		console.log(s)
	}*/

	//5.let 声明的变量是块级作用域
	//setTimeout(要执行的代码,延时时间)延时器
	// setTimeout(function(){
	// 	console.log('延时器')
	// },1000)
	//for 会在一瞬间执行完，这时候 i =5 延时器还在等待0.01s i以及是5了，所以会打印5个5
	for(var i = 0; i < 5;i++){
		setTimeout(function(){
		console.log(i)
	},1)//打印了5个5
		// console.log(i)
	}
	//当前的i只能在本轮循环中有用，并且只在本级作用域{}有效，每次循环的i其实都是一个新的变量
	for(let i = 0; i < 5;i++){
		setTimeout(function(){
		console.log(i)
	},1)
	}
</script>
</body>
</html>